package Threading;

public class Demo21 {
    /**
     * 前台线程与后台线程
     * 前台线程没有结束,进程就不会结束
     * 若前台线程全部结束，后台线程即使没有技术，进程也会结束------一般不用特别精确的数据计算，设为后台线程
     * 只要前台线程结束，进程必定会结束
     * @param args
     */
    public static void main1(String[] args) {
        //默认线程为前台线程--------后台线程需要手动设置
        Thread thread=new Thread(() -> {
            while(true){
                System.out.println("hello");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        thread.start();
        //main线程也是前台线程
        System.out.println("main主线程结束");

//        输出：
//        main主线程结束
//        hello
//        hello
//        hello
//        hello
//        hello
//        .
//        .
//        .
    }


    public static void main(String[] args) throws InterruptedException {
        Thread thread=new Thread(()->{
            while(true){
                System.out.println("hello");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        /**
         * 设置为后台线程
         * 线程名.setDaemon(true)
         * 注： 必须在start前设置为后台线程
         */
        thread.setDaemon(true);
        thread.start();

        Thread.sleep(1000);
        System.out.println("main主线程结束");
    }
}
